package wt.rocket.ctrl;

import java.util.ArrayList;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import wt.rocket.model.bd.BD;
import wt.rocket.model.bean.Persona;
import wt.rocket.widget.LinkNombrePersona;

/**
 *
 * @author WayTech
 */
public class CtrlPersonaList extends GenericForwardComposer {

  Grid grid;
  Label etqNro, etqEmail, etqTelefono, etqDireccion;
  //Para el nombre no usaremos un Label, sino un enlace (widget tipo A)
  LinkNombrePersona linkNombre;
  //datos:
  ArrayList lista;
  BD bd = new BD();

  @Override
  public void doAfterCompose(Component comp) throws Exception {
    super.doAfterCompose(comp);
    inicio();
  }

  void inicio() {
    buscarData();
    mostrarData();
  }

  /**
   * método que simula la búsqueda de la data
   */
  void buscarData() {
   lista = bd.getPersonas();
  }

  public void mostrarData() {
    if (lista == null) {
      System.out.println("CtrlPersonaList: Lista Vacía");
      //TODO: mostrar en la vista que no hay datos
      return;
    }
    ListModelList model = new ListModelList(lista);
    grid.setModel(model);
    grid.setRowRenderer(new RowRenderer() {

      public void render(Row row, Object data, int i) throws Exception {
        //se extrae la data
        Persona p = (Persona) data;

        //se crean los widgets con la data:
        etqNro = new Label("" + ++i);
        linkNombre = new LinkNombrePersona(p);
        etqTelefono = new Label(p.getTelefono());
        etqEmail = new Label(p.getEmail());
        etqDireccion = new Label(p.getDireccionCorta());
        
        //Enfoque B: no usado.
        /*
        linkNombre.setIdPersona(p.getId());
        linkNombre.setNombre(p.getNombre());
        linkNombre.setTelefono(p.getTelefono());
        linkNombre.setEmail(p.getEmail());
        linkNombre.setDireccionCorta(p.getDireccionCorta());
        */

        //se anexan los widgets a la fila
        etqNro.setParent(row);
        linkNombre.setParent(row);
        etqTelefono.setParent(row);
        etqEmail.setParent(row);
        etqDireccion.setParent(row);
      }
    });
  }
}
